const { app, BrowserWindow, ipcMain } = require("electron");
const path = require("node:path");
const fs = require("fs");

const getSourceUrl = (url) => {
  return url.replace("app.asar", "app.asar.unpacked");
};

// 配置文件路径
const configPath = getSourceUrl(path.join(__dirname, "config.json"));
let mainWindow = null;
console.log(getSourceUrl(configPath), 1);
// 创建窗口函数
function createWindow() {
  // 读取配置文件
  const config = JSON.parse(fs.readFileSync(configPath));

  // 创建浏览器窗口
  mainWindow = new BrowserWindow({
    width: config.width || 800,
    height: config.height || 600,
    webPreferences: {
      preload: path.join(__dirname, "preload.js"), // 如果有需要预加载的脚本
      nodeIntegration: false,
      contextIsolation: true,
      sandbox: true,
    },
    // frame: false,
  });

  // 加载配置文件中指定的URL或HTML文件
  if (config.url) {
    mainWindow.loadURL(config.url);
  } else if (config.file) {
    mainWindow.loadURL(getSourceUrl(path.join(__dirname, config.file)));
  } else {
    // 如果配置文件中没有指定，加载一个默认文件或页面
    mainWindow.loadFile("index.html");
  }
  mainWindow.setMenu(null);

  // 当窗口准备好时显示
  mainWindow.once("ready-to-show", () => {
    mainWindow.show();
  });
  ipcMain.on('esc-main-full', () => {
    if (mainWindow.isFullScreen()) {
      mainWindow.setFullScreen(false)
    } else {
      mainWindow.setFullScreen(true)
    }
  })
  mainWindow.webContents.openDevTools();
}
// 当Electron完成初始化并准备创建浏览器窗口时调用
app.whenReady().then(() => {
  createWindow();
  app.on("activate", () => {
    // macOS 上，当点击 Dock 图标并且没有其他窗口打开时，重新创建一个窗口。
    if (BrowserWindow.getAllWindows().length === 0) createWindow();
  });
});

// 关闭所有窗口时退出应用 (Windows & Linux)
app.on("window-all-closed", () => {
  if (process.platform !== "darwin") app.quit();
});
